﻿using DAL.EstRec;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Final_VA_2012.DAL
{
    public static class ProcesosAlmacenados
    {
        /// <summary>
        /// Método para la obtención de la bitácora.
        /// </summary>
        /// <param name="Sistema">Id_Sistema</param>
        /// <param name="Usuario">Id_Usuario</param>
        /// <param name="Transaccion">Id_Transaccion</param>
        /// <param name="FechaInicio1">Fecha Inicio</param>
        /// <param name="FechaInicio2">Fecha Inicio 2</param>
        /// <param name="FechaFin1">Fecha Fin</param>
        /// <param name="FechaFin2">Fecha Fin 2</param>
        /// <returns></returns>
        public static DataTable sgspSmCrReporteBitacora(int Sistema, int Usuario, int Transaccion, DateTime FechaInicio1, DateTime FechaInicio2, DateTime FechaFin1, DateTime FechaFin2)
        {
            #region LINQ

            //using (var entity = new SC_BMW_PRODUCCIONEntities())
            //{
            //    var resul0 = (from S in entity.sgSistemas
            //                  join B in entity.sgBitacoraTransaccions on S.IdSistema equals B.IdSistema
            //                  join U in entity.sgUsuarios on B.IdUsuario equals U.IdUsuario
            //                  join T in entity.ctTransaccions on B.IdTransaccion equals T.IdTransaccion

            //                  where (U.IdUsuario > 0)
            //                        && ((Sistema.Equals(null)) || (S.IdSistema == Sistema))
            //                        && ((Usuario.Equals(null)) || (U.IdUsuario == Usuario))
            //                        && ((Transaccion.Equals(null)) || (B.IdTransaccion == Transaccion))


            //                  select new {  S.IdSistema, 
            //                                S.SstmDescripcion, 
            //                                U.IdUsuario, 
            //                                Nombre = U.UsroNombre + ' ' + U.UsroApellidoPaterno + ' ' + U.UsroApellidoMaterno,
            //                                T.IdTransaccion,
            //                                T.TrnsNombre,
            //                                B.BtTrFechaHoraInicio,
            //                                B.BtTrFechaHoraFin,
            //                                B.BtTrObservaciones   

            //                  });

            //}

            #endregion

            string sCadena1;

            sCadena1 = @"SELECT  
	                        S.IdSistema, 
	                        S.SstmDescripcion, 
	                        U.IdUsuario, 
	                        U.UsroNombre + ' ' + U.UsroApellidoPaterno + ' ' + U.UsroApellidoMaterno as Nombre,  
                            T.IdTransaccion,
                            T.TrnsNombre, 
                            B.BtTrFechaHoraInicio,  
	                        B.BtTrFechaHoraFin, 
	                        B.BtTrObservaciones   
	
                        FROM sgsistema AS S
                        INNER JOIN sgBitacoraTransaccion AS B ON B.IdSistema = S.IdSistema
                        INNER JOIN sgusuario as U ON B.IdUsuario = U.IdUsuario   
                        INNER JOIN cttransaccion AS T ON B.IdTransaccion = t.IdTransaccion
                        WHERE
                        U.IdUsuario > 0";


            if (Sistema >= 0)
            {

                sCadena1 += " AND S.IdSistema = " + Sistema.ToString();
            }

            if (Usuario >= 0)
            {

                sCadena1 += " AND U.IdUsuario = " + Usuario.ToString();
            }

            if (Transaccion >= 0)
            {
                sCadena1 += " AND B.IdTransaccion = " + Transaccion.ToString();
            }

            if (FechaInicio1.Year != 1900 && FechaInicio1.Month != 1 && FechaInicio1.Day != 1 && FechaInicio2.Year != 1900 && FechaInicio2.Month != 1 && FechaInicio2.Day != 1)
            {
                string A1 = FechaInicio1.Year.ToString();
                string M1 = FechaInicio1.Month.ToString();
                string D1 = FechaInicio1.Day.ToString();

                string A2 = FechaInicio2.Year.ToString();
                string M2 = FechaInicio2.Month.ToString();
                string D2 = FechaInicio2.Day.ToString();

                if (M1.Length == 1)
                    M1 = "0" + M1;
                if (M2.Length == 1)
                    M1 = "0" + M1;
                if (D1.Length == 1)
                    M1 = "0" + M1;
                if (D2.Length == 1)
                    M1 = "0" + M1;

                sCadena1 += " and CONVERT(VARCHAR(8),B.BtTrFechaHoraInicio ,112) between '" + A1 + M1 + D1 + "' AND '" + A2 + M2 + D2 + "'";
            }

            if (FechaFin1.Year != 1900 && FechaFin1.Month != 1 && FechaFin1.Day != 1 && FechaFin2.Year != 1900 && FechaFin2.Month != 1 && FechaFin2.Day != 1)
            {
                string A1 = FechaFin1.Year.ToString();
                string M1 = FechaFin1.Month.ToString();
                string D1 = FechaFin1.Day.ToString();

                string A2 = FechaFin2.Year.ToString();
                string M2 = FechaFin2.Month.ToString();
                string D2 = FechaFin2.Day.ToString();

                if (M1.Length == 1)
                    M1 = "0" + M1;
                if (M2.Length == 1)
                    M1 = "0" + M1;
                if (D1.Length == 1)
                    M1 = "0" + M1;
                if (D2.Length == 1)
                    M1 = "0" + M1;

                sCadena1 += " AND CONVERT(VARCHAR(8),B.BtTrFechaHoraFin ,112) BETWEEN '" + A1 + M1 + D1 + "' AND '" + A2 + M2 + D2 + "'";
            }

            DataTable ds = SrvDB.ExecuteQuery(sCadena1);

            return ds;
        }

        /// <summary>
        /// Devuelve los Roles existentes
        /// </summary>
        /// <returns></returns>
        public static DataTable sgspSmCrRoles()
        {

            string sCadena1;

            sCadena1 = "SELECT IdRol, RolDescripcion from sgrol where IdRol > 0";

            DataTable ds = SrvDB.ExecuteQuery(sCadena1);

            return ds;
        }

        /// <summary>
        /// Método para obtener los datos que se muestran en el reporte de usuario dentro de la aplicación de seguridad.       
        /// </summary>
        /// <param name="tPuesto">Id_Puesto. Para omitir poner -1</param>
        /// <param name="tRol">Id_Rol. Para omitir poner -1</param>
        /// <param name="vFechaInicial">Fecha Inicial. Para omitir poner -1</param>
        /// <param name="vFechaFinal">Fecha Final. Para omitir poner -1</param>
        /// <param name="cEstado">Estado. Para omitir poner 'N'</param>
        /// <param name="tZona">Id_Zona. Para omitir poner -1</param>
        /// <param name="idUsuario">Id_Usuario. Para omitir poner -1</param>
        /// <returns></returns>
        public static DataTable sgspSmCrReporteUsuario(int tPuesto, int tRol, DateTime vFechaInicial, DateTime vFechaFinal, char cEstado, int tZona, int idUsuario)
        {


            string Query = @"
                SELECT 
			
			    U.Idusuario,
			    U.usroNombre + ' ' + U.usroApellidoPaterno + ' ' + U.UsroApellidoMaterno AS Nombre,
			    P.Puesto,
			    '' AS Roles,

                U.UsrofechaVencimiento, 
                    case U.usroIndicadorestado 
                        when 'A' then 'ACTIVO'
                        when 'B' then 'BLOQUEADO' 
                    End as Estado, 
                Z.znGgNombre	
			    FROM sgUsuario AS U
			    INNER JOIN ctPuesto AS P ON U.IdPuesto = P.IdPuesto
                INNER JOIN ctZonaGeografica AS Z ON U.idZonaGeografica = Z.IdZonaGeografica
                WHERE 
                    (U.IdUsuario > 0)";

            if (tPuesto != -1)
                Query += " and P.IdPuesto = '" + tPuesto + "'";

            if (tRol != -1)
                Query += " and U.idUsuario in (select UR.Idusuario from sgusuariorol UR where UR.idRol = '" + tRol + "' and UR.UsrlIndicadorDisponible = 'S')";

            if (!cEstado.Equals("N"))
                Query += " and U.UsroIndicadorEstado = '" + cEstado + "'";

            if (tZona != -1)
                Query += " and Z.idZonaGeografica = '" + tZona + "'";

            if (idUsuario != -1)
                Query += " and U.Idusuario = '" + idUsuario + "'";

            if (vFechaInicial.Year != 1900 && vFechaInicial.Month != 1 && vFechaInicial.Day != 1 && vFechaFinal.Year != 1900 && vFechaFinal.Month != 1 && vFechaFinal.Day != 1)
            {
                string A1 = vFechaInicial.Year.ToString();
                string M1 = vFechaInicial.Month.ToString();
                string D1 = vFechaInicial.Day.ToString();

                string A2 = vFechaFinal.Year.ToString();
                string M2 = vFechaFinal.Month.ToString();
                string D2 = vFechaFinal.Day.ToString();

                if (M1.Length == 1)
                    M1 = "0" + M1;
                if (M2.Length == 1)
                    M1 = "0" + M1;
                if (D1.Length == 1)
                    M1 = "0" + M1;
                if (D2.Length == 1)
                    M1 = "0" + M1;

                Query += " AND U.UsroFechavencimiento BETWEEN '" + A1 + M1 + D1 + "' AND '" + A2 + M2 + D2 + "'";
            }

            DataTable ds = SrvDB.ExecuteQuery(Query);

            for (int i = 0; i < ds.Rows.Count; i++)
            {

                ds.Rows[i]["Roles"] = sgspSmCrUsuarioRoles(Int32.Parse(ds.Rows[i][0].ToString()));
            }

            return ds;
        }

        /// <summary>
        /// Método para obtener una cadena que contienen los roles de un usuario separados por comas.
        /// </summary>
        /// <param name="idUsuario">Id_Usuario</param>
        /// <returns></returns>
        public static string sgspSmCrUsuarioRoles(int idUsuario)
        {
            string Roles = "";
            string Query = @"
                                SELECT b.IdRol 
	                                FROM  sgUsuario AS A
                                    INNER JOIN sgUsuarioRol AS B ON A.IdUsuario = B.IdUsuario
	                                WHERE 
	                                and A.IdUsuario = " + idUsuario + @" 
	                                and B.usrlindicadordisponible = 'S'
	                                and B.IdRol > 0
                                ";

            DataTable ds = SrvDB.ExecuteQuery(Query);

            for (int i = 0; i < ds.Rows.Count; i++)
            {

                Roles += ds.Rows[i][0] + ", ";
            }

            Roles.Trim();

            if (Roles.Length > 0)
                Roles.Substring(0, Roles.Length - 1);

            return Roles;
        }

        /// <summary>
        /// Metodo para hacer un Update de los usuarios del sistema.
        /// </summary>
        public static void sp_fixusers() { 
            string Query = @"
                                SELECT UserName = name FROM sysusers
                                    WHERE issqluser = 1 and (sid is not null and sid <> 0x0)
                                    and suser_sname(sid) is null
                                    ORDER BY name
                                ";
            string Query2 = "";
            DataTable ds = SrvDB.ExecuteQuery(Query);

            for (int i = 0; i < ds.Rows.Count; i++ )                
            {

                Query2 += "EXEC sp_change_users_login 'update_one', '" + ds.Rows[i][0].ToString() + "', '" + ds.Rows[i][0].ToString() + "'; ";
            }

            DataTable ds2 = SrvDB.ExecuteQuery(Query2);
        }

        /// <summary>
        /// Reporte Vr Análisis Residuales
        /// </summary>
        /// <returns></returns>
        public static DataTable spVrReporteAnalisisResiduales() {

            string Query = @"
                
                Select M.MndaDescripcion,            A.AnRsPlazo,                    A.AnRsValorModelo1, 
                       A.AnRsValorModelo2,           A.AnRsValorModelo3,             A.AnRsValorModelo4, 
                       A.AnRsValorModelo5,           A.AnRsValorModelo6,             A.AnRsPorcentajeMinimoNormal,
                       A.AnRsPorcentajeMaximoNormal, A.AnRsPorcentajePromedioNormal, A.AnRsValorDeflactadoModelo1,
                       A.AnRsValorDeflactadoModelo2, A.AnRsValorDeflactadoModelo3,   A.AnRsValorDeflactadoModelo4,
                       A.AnRsValorDeflactadoModelo5, A.AnRsValorDeflactadoModelo6,   A.AnRsPorcentajeMinimoDeflac, 
                       A.AnRsPorcentajeMaximoDeflac, A.AnRsPorcentajePromedioDeflac, A.AnRsMinimoNormalDeflactado, 
                       A.AnRsMaximoNormalDeflactado, A.AnRsPromedioNormalDeflactado  
                From   dbo.vrAnalisisResiduales A
                INNER JOIN dbo.ctMoneda AS M ON A.IdMoneda=M.IdMoneda
                Order by A.IdMoneda, A.AnRsPlazo
                ";

            DataTable ds = SrvDB.ExecuteQuery(Query);

            return ds;
        }
        
        /// <summary>
        /// Reporte Vr Análisis Residuales Niveles
        /// </summary>
        /// <returns></returns>
        public static DataTable spvrReporteAnalisisResidualesNiveles()
        {

            string Query = @"
                
                Select Upper(sNombreNivel)as Nombre,   sMoneda,              iNumeroPlazo,
                      nValorResidualPromedio,         nValorResidualMinimo
                From   vrReporteAnalisisResidualesConsolidado  
                Order by sNombreNivel, sMoneda, iNumeroPlazo
                ";

            DataTable ds = SrvDB.ExecuteQuery(Query);

            return ds;
        }

        /// <summary>
        /// Reporte Vr Reporte Vehículos Asignados
        /// </summary>
        /// <returns></returns>
        public static DataTable spVrReporteVehiculosAsignados(int idMarca, DateTime dtFechaInformacion)
        {
            string Query = @"

                  Select AA.ArAcDescripcion,  PA.PrAsDescripcionUsado, HP.HsPrFecha,  
                         M.MndaDescripcion,   HP.HsPrValorVenta,       HP.HsPrValorCompra   
                  From   dbo.ctArbolActivo AS AA 
                    INNER JOIN dbo.vrReportePrecioAsignado AS PA ON AA.IdNodo = PA.IdNodo
                    INNER JOIN dbo.vrHistoricoPrecio AS HP ON HP.IdNodo = PA.IdNodo
                    INNER JOIN dbo.ctMoneda AS M ON M.IdMoneda = HP.IdMoneda
                  
                    WHERE
                         HP.IdTipoPrecio=2
                  And    Month(HP.HsPrFecha) = Month(" + dtFechaInformacion.Month + @")
                  And    Year(HP.HsPrFecha) = Year(" + dtFechaInformacion.Year + @")
                  And    AA.IdNodoOrigen= "+idMarca+@"
                  
                  Order by AA.IdNodo

                ";

            DataTable ds = SrvDB.ExecuteQuery(Query);

            return ds;
        }

        /// <summary>
        /// Reporte Vr Reporte Vehículos Sin Precio
        /// </summary>
        /// <returns></returns>
        public static DataTable spVrReporteVehiculosSinPrecio(int idMarca, DateTime cFechaPrecio)
        {
            string Query = @"

                   select ArAcDescripcion 
                   From   dbo.ctArbolActivo 
                   Where  IdNodo Not In(
   
			                Select A.IdNodo
				                From dbo.ctArbolActivo AS A 
					                INNER JOIN dbo.vrHistoricoPrecio H ON A.IdNodo= H.IdNodo
	                                And    H.IdTipoPrecio = 2
	                                And    Month(HsPrFecha) = Month(" + cFechaPrecio.Month + @")
	                                And    Year(HsPrFecha) = Year(" + cFechaPrecio.Year + @"))
                   And ArAcNivelNodo= 4 
                   And IdNodoOrigen = "+idMarca;

            DataTable ds = SrvDB.ExecuteQuery(Query);

            return ds;
        }

        /// <summary>
        /// Reporte Vr Reporte Gráfica Contrato
        /// </summary>
        /// <returns></returns>
        public static DataTable spVrReporteGraficaContrato(string idOperacion)
        {
            string Query = @"

                   Select   T.TbAmFechaFinal as Fecha, T.TbAmSaldoFinal As SaldoInsoluto, T.TbAmValorLibrosFinal As ValorLibros,
                         dbo.fnVrCalculaMontoParidad(C.IdMoneda,1,TC.TpCmValor,H.HsPrValorCompra) As ValorMercado
                  From   dbo.vrTablaAmortizacion T 
                         Left Outer join
                         (((dbo.vrContrato C                
                              Inner Join dbo.vrHistoricoPrecio H  On  H.HsPrModelo=C.CntrModelo
                                                               And H.IdTipoPrecio = 2  )
                              Inner Join dbo.ctTipoCambio  TC  On  Month(TC.TpCmFecha)=Month(H.HsPrFecha)
                                                            And Year(TC.TpCmFecha)=Year(H.HsPrFecha))
                              Inner Join dbo.ctArbolActivo A On A.ArAcClave = C.CntrClave
                                                          And H.IdNodo=A.IdNodo)
                           On    C.IdOperacion = T.IdOperacion
                           And   Month(H.HsPrFecha)=Month(T.TbAmFechaFinal)
                           And   Year(H.HsPrFecha)=Year(T.TbAmFechaFinal)
                  Where T.IdOperacion= '" + idOperacion + @"' 
                  Order by TbAmFechaInicial

            ";

            DataTable ds = SrvDB.ExecuteQuery(Query);
            DataTable ds2 = new DataTable();

            ds2.Rows.Add(ds.Rows[0]);

            for(int i = 0; i < ds.Rows.Count; i++){

                ds2.Rows.Add(ds.Rows[i]);
            }

            return ds2;
        }
		
        public static void spBuscaCadenaEnLaBaseDeDatos(string vCadena)
        { 
            int iId = 0;
			string vNombreObjeto = "";
			string cTipoObjeto = "";
			string vTexto = "";
			string vTextoInicial = "";
			string vTextoSiguiente = "";
			string vTextoFinal = "";
			int smallint = 0;
			int iContadorDeCadenas = 0;
			
			DataTable tTablaDescripcionObjeto = new DataTable();
			tTablaDescripcionObjeto.Columns.Add("TbDOClave", typeof(string));
			tTablaDescripcionObjeto.Columns.Add("TbDODescripcion", typeof(string));
			
			tTablaDescripcionObjeto.Rows.Add("C", "Restricción CHECK");
			tTablaDescripcionObjeto.Rows.Add("D", "Valor predeterminado o restricción DEFAULT");  
			tTablaDescripcionObjeto.Rows.Add("F", "Restricción FOREIGN KEY");  
			tTablaDescripcionObjeto.Rows.Add("L", "Registro");  
			tTablaDescripcionObjeto.Rows.Add("FN", "Función definida por el usuario");  
			tTablaDescripcionObjeto.Rows.Add("IF", "Funciones de tabla en línea");  
			tTablaDescripcionObjeto.Rows.Add("P", "Procedimiento almacenado");  
			tTablaDescripcionObjeto.Rows.Add("PK", "Restricción PRIMARY KEY (tipo K)");  
			tTablaDescripcionObjeto.Rows.Add("RF", "Procedimiento almacenado de filtro de duplicación ");  
			tTablaDescripcionObjeto.Rows.Add("S", "Tabla del sistema");  
			tTablaDescripcionObjeto.Rows.Add("TF", "Función de tabla");  
			tTablaDescripcionObjeto.Rows.Add("TR", "Desencadenador");  
			tTablaDescripcionObjeto.Rows.Add("U", "Tabla de usuario");  
			tTablaDescripcionObjeto.Rows.Add("UQ", "Restricción UNIQUE (tipo K)");  
			tTablaDescripcionObjeto.Rows.Add("V", "Vista");  
			tTablaDescripcionObjeto.Rows.Add("X", "Procedimiento almacenado extendido");

			string Query = @"
                            select o.Id, o.name, o.xType  
                                from sysobjects o  
                                where o.Id in (select c.Id from syscomments c)  
                                and o.xType <> 'S' 
                                ";

            DataTable ds = SrvDB.ExecuteQuery(Query);			
        }
		
		public static string spMnDatosDeUnaTablaParaInsertar(string vTabla) {

            string Query = @"
                                select *	
			                        from sysobjects a, syscolumns b
			                        where a.id = b.id
			                        and a.name = '" + vTabla + @"'
                                ";

            DataTable ds = SrvDB.ExecuteQuery(Query);

            if (ds.Rows.Count == 0)
            {
                return "No existe la tabla " + vTabla;
            }
            else { 
            
               	string Query2 = @"
					select case when (type_name(b.xusertype) = 'varchar' or type_name(b.xusertype) = 'char') 
								then ' + IsNull('','''''' + REPLACE(' + b.name + ','''''''','''') + '''''''','',Null'')'
							when type_name(b.xusertype) = 'datetime'
								then ' + IsNull('','''''' + rtrim(Convert(char, ' + b.name + ')) + '''''''','',Null'')'
							when type_name(b.xusertype) = 'image'
								then ' + '',Null'''
								else ' + IsNull('','' + rtrim(Convert(char, ' + b.name + ')),'',Null'')' end,
						', ' + b.name, b.xusertype
						from sysobjects a, syscolumns b
					where a.id = b.id
					and a.name = '" + vTabla + @"'";
					
				DataTable ds2 = SrvDB.ExecuteQuery(Query2);

				for(int i = 0; i < ds2.Rows.Count; i++){
				    
                    string vLlaveTipoCadena = "";
                    string Resultados = "";
                    string vColumnas = "";
                    string vCadena = "";

					if(ds2.Rows[i][2].ToString().Equals("167") || ds2.Rows[i][2].ToString().Equals("175") || ds2.Rows[i][2].ToString().Equals("61")){
					
						vLlaveTipoCadena = @"''''''''";
					}
					else {
						vLlaveTipoCadena = @"''''";
					}
					
					Resultados = Resultados + ds2.Rows[i][0].ToString();
					vColumnas = vColumnas + ds2.Rows[i][1].ToString();
					
					vCadena = "select " + "''insert into " + vTabla + "(" + vColumnas.Substring(1, vColumnas.Length - 1) + ") values (" + vLlaveTipoCadena + " + IsNull(" +  Resultados.Substring(16, Resultados.Length - 1) + " + '')' from " + vTabla;
					DataTable Aux = SrvDB.ExecuteQuery(vCadena);
				}

                return "Consulta Exitosa";
            }
        }
		
		public static void spVrAnalisisResidualesNiveles(int iNivelAnalizar, int iModeloAnalizar) {
			
			bool bOperacion = false;
			DateTime dFechaInicial = DateTime.Now;
			int iModeloInicial = 0;
			  
			string cRutaArbol;
			string cNombreNivel;
			
			string Query = "Delete From dbo.vrReporteAnalisisResidualesConsolidado";			
			DataTable ds = SrvDB.ExecuteQuery(Query);
			
			string Query2 = @"
			Select ArAcRuta, ArAcNombre 
			   From   dbo.ctArbolActivo 
			   Where  ArAcNivelNodo = " + iNivelAnalizar;
			   
			DataTable ds2 = SrvDB.ExecuteQuery(Query2);
			
			for(int i = 0; i < ds2.Rows.Count; i++)
			{
				spVrAnalisisResiduales(ds2.Rows[i][0].ToString(), iModeloAnalizar, 0,0,0);
				
				string Query3 = @"
					Insert Into dbo.vrReporteAnalisisResidualesConsolidado
						(sNombreNivel, sMoneda, iNumeroPlazo, nValorResidualPromedio, nValorResidualMinimo )               
					    Select '" + ds2.Rows[i][1].ToString() + @"', M.MndaDescripcion, A.AnRsPlazo,                    
						    A.AnRsPorcentajePromedioNormal,  A.AnRsPorcentajeMinimoNormal
					    From   dbo.vrAnalisisResiduales A, dbo.ctMoneda M
					    Where  A.IdMoneda=M.IdMoneda
					    Order by A.IdMoneda, A.AnRsPlazo
					";
			
				DataTable ds3 = SrvDB.ExecuteQuery(Query3);
			}
		}		

        public static spVrSinonimosResponse spVrSinonimos(int iTablaSinonimo){
        
            spVrSinonimosResponse Response = new spVrSinonimosResponse();

            //Bandera de Error 
            bool bOperacion = true;

            int iCuetaEspacio = 0;
            int iIdMaximoSinonimo = 0;
            int iExiste = 0;

            string Query = "SELECT IsNull(Max(IdDiccionario),0) From dbo.ctDiccionario";			
			DataTable ds = SrvDB.ExecuteQuery(Query);			
            try 
	        {	  
                iIdMaximoSinonimo = Int32.Parse( ds.Rows[0][0].ToString());
	        }
	        catch (Exception ex)
	        {
		        iIdMaximoSinonimo = 0;
	        }

            if(iTablaSinonimo == 1){
                
                string Query2 = "Select PrNCDescripcion From dbo.vrPrecioNuevoCarga";			
			    DataTable ds2 = SrvDB.ExecuteQuery(Query2);
                                
                for(int i = 0; i < ds2.Rows.Count; i++){

                    string cDescripcion = ds2.Rows[i][0].ToString();
                    string cPalabra = "";

                    while(!cDescripcion.Equals("")){
                        
                        iCuetaEspacio = cDescripcion.IndexOf(' ');
                        if(iCuetaEspacio != -1){
                        
                            cPalabra = cDescripcion.Substring(0, iCuetaEspacio).TrimEnd();
                            cDescripcion = cDescripcion.Substring(iCuetaEspacio, cDescripcion.Length).Trim();
                        } else {
                            
                            cPalabra = cDescripcion;
                            cDescripcion = "";                        
                        }

                        cPalabra = cPalabra.Replace(" ",""); 

                        if(!cPalabra.Equals("")){
                        
                            string Query3 = "Select IdDiccionario From dbo.ctDiccionario Where DcDescripcion = '" + cPalabra + "'";			
			                DataTable ds3 = SrvDB.ExecuteQuery(Query3);
                        
                            if(ds3.Rows.Count == 0){
                          
                                string Query4 = "Select IdDiccionario From dbo.ctDiccionario Where DcDescripcion like '%' + '" + cPalabra + "' + '%'";			
			                    DataTable ds4 = SrvDB.ExecuteQuery(Query4);

                                if(ds4.Rows.Count == 0){

                          //           Select @iExiste=IdDiccionario From dbo.ctDiccionario Where DcDescripcion like '%'+ @cPalabra + '%'
                          //            If @iExiste Is Not Null
                          //               Begin
                          //                  Select @iParecidos=@iParecidos+1
                          //                  Select @cSinonimos=@cSinonimos + Convert(varchar,@iIdMaximoSinonimo+1) +','
                          //               End

                          //            If @bOperacion <> 0
                          //               Begin           
                          //                  Insert Into dbo.ctDiccionario 
                          //                             (IdDiccionario,       DcDescripcion)
                          //                        Values(@iIdMaximoSinonimo+1, @cPalabra)
                                
                          //                  Select @iIdMaximoSinonimo= @iIdMaximoSinonimo+1
                          //                  Select @iInsertados= @iInsertados+1
                          //                  If @@ERROR <> 0
                          //                     Begin
                          //                       Select @bOperacion = 0
                          //                    End
                          //              End--Si hay un error anterior  
                                }
                            }
                        }
                    }
                }







            } else if(iTablaSinonimo == 2){
                
                string Query2 = "Select PrUCDescripcion From dbo.vrPrecioUsadoCarga";			
			    DataTable ds2 = SrvDB.ExecuteQuery(Query2);
            }

            if(bOperacion == true){
            
                Response.iInsertados = -1;
            }

            return Response;
        }
    }

    public class spVrSinonimosResponse{
    
        private int _iInsertados;
        private int _iParecidos;
        private string _cSinonimos;

        public int iInsertados
        {
          get { return _iInsertados; }
          set { _iInsertados = value; }
        }

        public int iParecidos
        {
          get { return _iParecidos; }
          set { _iParecidos = value; }
        }

        public string cSinonimos
        {
          get { return _cSinonimos; }
          set { _cSinonimos = value; }
        }

        public spVrSinonimosResponse(){
        
            iInsertados = 0;
            iParecidos = 0;
            cSinonimos = "";
        }
    }
}
